﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//struct s
//{
//	int i;//4 8 4
//	char c;//1 8 1
//};//结合上篇文章，词结构体内存对齐需8个字节
//union u
//{
//	int i;
//	char c;
//};
//int main()
//{
//	printf("%zu\n", sizeof(struct s));//8
//	printf("%zu\n", sizeof(union u));//4
//	return 0;
//}

//union u
//{
//	int i;
//	char c;
//};
//int main()
//{
//	union u u1 = { 0 };
//	u1.i = 0x11223344;
//	u1.c = 0x55;
//	return 0;
//}

//union un1
//{
//	char c[5];//5  对齐数：1 8 1
//	int i;//4  4 8 4
//};
//int main()
//{
//	printf("%zu\n", sizeof(union un1));//8
//	return 0;
//}

//struct gift_list
//{
//	//公共属性 
//	int stock_number;//库存量 
//	double price; //定价 
//	int item_type;//商品类型 
//
//	//特殊属性 
//	char title[20];//书名 
//	char author[20];//作者 
//	int num_pages;//⻚数 
//
//	char design[30];//设计 
//	int colors;//颜⾊ 
//	int sizes;//尺⼨ 
//};
////优化：
//struct gift_list
//{
//	int stock_number;//库存量 
//	double price; //定价 
//	int item_type;//商品类型 
//
//	union {
//		struct
//		{
//			char title[20];//书名 
//			char author[20];//作者 
//			int num_pages;//⻚数 
//		}book;
//		struct
//		{
//			char design[30];//设计 
//		}mug;
//		struct
//		{
//			char design[30];//设计 
//			int colors;//颜⾊ 
//			int sizes;//尺⼨ 
//		}shirt;
//	}item;
//};
//// 打印函数
//void print_gift(const struct gift_list* gift) {
//    printf("库存: %d\n", gift->stock_number);
//    printf("价格: %.2f\n", gift->price);
//
//    switch (gift->item_type) {
//    case 1: // 书
//        printf("类型: 书\n");
//        printf("书名: %s\n", gift->item.book.title);
//        printf("作者: %s\n", gift->item.book.author);
//        printf("页数: %d\n", gift->item.book.num_pages);
//        break;
//
//    case 2: // 杯子
//        printf("类型: 杯子\n");
//        printf("设计: %s\n", gift->item.mug.design);
//        break;
//
//    case 3: // 衬衫
//        printf("类型: 衬衫\n");
//        printf("设计: %s\n", gift->item.shirt.design);
//        printf("颜色数: %d\n", gift->item.shirt.colors);
//        printf("尺寸: %d\n", gift->item.shirt.sizes);
//        break;
//
//    default:
//        printf("未知商品类型\n");
//    }
//    printf("--------------------------\n");
//}
//
//int main() {
//    // 初始化三种不同类型的商品
//    struct gift_list book_gift = {
//        .stock_number = 100,
//        .price = 39.99,
//        .item_type = 1, // 书
//        .item.book = {
//            .title = "C Programming",
//            .author = "K&R",
//            .num_pages = 500
//        }
//    };
//
//    struct gift_list mug_gift = {
//        .stock_number = 50,
//        .price = 15.50,
//        .item_type = 2, // 杯子
//        .item.mug = {
//            .design = "Dragon Pattern"
//        }
//    };
//
//    struct gift_list shirt_gift = {
//        .stock_number = 75,
//        .price = 29.99,
//        .item_type = 3, // 衬衫
//        .item.shirt = {
//            .design = "Floral Print",
//            .colors = 4,
//            .sizes = 42
//        }
//    };
//
//    // 动态创建并初始化
//    struct gift_list dynamic_gift;
//    dynamic_gift.stock_number = 30;
//    dynamic_gift.price = 45.75;
//    dynamic_gift.item_type = 0;
//    strcpy(dynamic_gift.item.book.title, "Modern C");
//    strcpy(dynamic_gift.item.book.author, "Jens Gustedt");
//    dynamic_gift.item.book.num_pages = 400;
//
//    // 打印所有商品信息
//    print_gift(&book_gift);
//    print_gift(&mug_gift);
//    print_gift(&shirt_gift);
//    print_gift(&dynamic_gift);
//
//    return 0;
//}

//判断大小端
//check_sys()
//{
//	int a = 1;//0x00000001
//	//00 00 00 01 / 01 00 00 00
//	if (*(char*)&a == 1)
//		return 1;//小端
//	else
//		return 0;
//}
////使用联合体
//int check_sys()
//{
//	union un
//	{
//		char c;
//		int i;
//	}u;
//	u.i = 1;
//	return u.c;//返回1，就是小端
//}
//int main()
//{
//	if (check_sys() == 1)
//		printf("小端\n");
//	else
//		printf("大端\n");
//	return 0;
//}

//enum Day//星期
//{
//	Mon,
//	Tues,
//	Wed,
//	Thur,
//	Fri,
//	Sat,
//	Sun
//};
//enum Sex//性别
//{
//	MALE,
//	FEMALE,
//	SECRET
//};
//enum Color//颜⾊
//{
//	RED,
//	GREEN,
//	BLUE
//};

//enum Sex//性别
//{
//	MALE,
//	FEMALE,
//	SECRET
//};
//enum Color//颜⾊
//{
//	RED = 2,
//	GREEN = 4,
//	BLUE = 8
//};
//int main()
//{
//	//MALE = 5;//err
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//	printf("%d\n", RED);
//	return 0;
//}

//enum Sex
//{
//	MALE,
//	FEMALE,
//	SECRET
//};
//int main()
//{
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//	enum Sex s = FEMALE;
//	if (s == MALE)
//	{
//		printf("男\n");
//	}
//	else if(s==FEMALE){
//		printf("女\n");
//	}
//	else
//		printf("保密\n");
//	return 0;
//}

//写一个计算器:加减乘除
//enum Option
//{
//	EXIT,//0
//	ADD,//1
//	SUB,
//	MUL,
//	DIV
//};
//void menu()
//{
//	printf("***********************\n");
//	printf("***** 1.add 2.sub *****\n");
//	printf("***** 3.mul 4.div *****\n");
//	printf("***** 0.exit      *****\n");
//	printf("***********************\n");
//}
//int main()
//{
//	int input = 0;
//	do
//	{
//		menu();
//		printf("请选择:");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case ADD:
//			//加法
//			break;
//		case MUL:
//			//乘法
//			break;
//		case SUB:
//			//减法
//			break;
//		case DIV:
//			//除法
//			break;
//		case EXIT:
//			//退出
//			break;
//		default:
//			break;
//		}
//	} while (input);
//
//	return 0;
//}

enum Color//颜⾊
{
	RED = 1,
	GREEN = 2,
	BLUE = 4
};
enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值 